A file system determines how data is stored and organized on a storage device, such as a hard disk drive (HDD), flash memory, or other storage media. Unplanned interruptions to the operation of a computer-operated device, such as a power failure, system crash, or improper shut down by a user, file systems can be used to detect and resolve data inconsistencies. In non-journaling file systems, the recovery process can take a long time, while the system performs a block-by-block analysis of the data based on the file system. FAT16 and FAT32 are examples of non-journaling file systems. Journaling file systems cut down recovery time by continuously logging changes to the file system in a separate file called a journal. In the event of an unexpected interruption, the file system can be restored to a known good state by reading and replaying the journal when the system restarts. Unlike conventional non-journaling file systems, journaling file systems eliminate the need to perform a consistency check of the entire file system during system restart following a unplanned interruption. Systems using a journaling file system can recover from interruptions in a much shorter period of time. Examples of journaled file systems include ReiserFS, JFS, XFS (Extended File System), Linux ext3 and NTFS. Journaling file systems may record meta-data, that is, information about the data, such as when a data file was created, file size, and storage location, or both data and meta-data.
Historically, consumer electronics devices such as personal video recorders (PVRs), digital cameras, mobile phones, media players, and set-top boxes, have largely used non-journaling file systems, such as FAT 16 and FAT32. As a result, such consumer devices are more likely to experience data loss or file corruption issues if the operation of the device is unexpectedly interrupted. Traditional journaling techniques may be employed in such consumer devices but not without drawbacks. While data integrity and system availability of the consumer device is improved, the devices are often unacceptably slow to recover from unexpected interruptions. Furthermore, data stored on the devices may be incompatible with other devices not employing the same journaling file system.
Some prior art file system architectures have tried to improve performance by storing the journal log on a separate memory or disk than the file system. However, in these systems, the journal and the file system are not distinct, that is, the file system cannot operate if the journal is removed or disabled. Further, data stored using these prior art file systems is only interchangeable with other devices using the same type of journaled file system.